#ifndef PANELBILL_H
#define PANELBILL_H



#include <QWidget>
#include "NRJB/NRJB103_Type.h"
#include "IEC103Type.h"

namespace Ui {
class PanelBill;
}

#define SETTIG_COLINDX 1
#define DATATYPE_COLINDX 8
#define SPACE_   "---"      //当前行显示组号组名，在新的个组开始时数据类型插入一个该符合保证和 名称对应
class PanelBill : public QWidget
{
    Q_OBJECT

public:
    explicit PanelBill(QWidget *parent = nullptr);
    ~PanelBill();

    void showBillTables(QList<QStringList> tableInfoLists);

    QVector< QVector<OneDataSetStruct> >  getNewDataSet( );

    bool checkTableDataSets();       // 检查table展示的数据是否已经获取到

public slots:
    void slot_recvParserResult(QStringList listContents, int columnIndex);         // 接收parser对象的结果

    // 获取界面修改后的定值
    QStringList slot_getModifiedBillValues();          // 传新修改的值给 parse 构造发送报文

    void slot_pushButtonClearAll_clicked();

signals:
//    void sig_GroupSelect(QString groupNo);             // 鼠标点击到界面左边的组标题信号，切换右边的显示

private:
    Ui::PanelBill *ui;
    void setDataListToTable(const QStringList &newDataList, int colIndex);
    void setDataListToGroupTitleTable(const QStringList &newDataList, int colIndex);
    void dataTypeToRealName(QString& numStr);
    void dataTypeToType(QString &data, QString& dataTypeStr, QString &type, int& width); // 将界面上汉子描述的数据类型转化成协议规定的描述字符
    void setGroupTitleSpan(int rowIndx);

    // 将数据序列插入到表格指定位置
    void insertData(QStringList &newDataList, int colIndex, int startRowIndex);


};

#endif // PANELBILL_H
